from PIL import Image
import numpy as np

im = np.array(Image.open('./image/1.jpg'))

# print(im)
# print(type(im))  # <class 'numpy.ndarray'>
# print(im.dtype)  # uint8
# print(im.shape)  # (597, 950 ,3)

# Image.open('...').convert('L') to convert image to grey-image
# im_gray = np.array(Image.open('./image/1.jpg').convert('L'))
# print(im_gray.shape)

# np.asarray() can get a read-only ndarray, while np.array() gets a read-write one
'''np.array()'''
# im = np.array(Image.open('./image/1.jpg'))
# print(im.flags.writeable)
# print(im[0, 0, 0])
# im [0, 0, 0] = 0
# print(im[0, 0, 0])


''' 图片数据类型以 uint8 进行读取。
    若想以 float 类型进行读取, 
        可以使用 astype()， 
        或指定 np.array() 的第二个参数
'''
# im_f = im.astype(np.float64)
# print(im_f.dtype)
# print(im_f)
# im_f2 = np.array(Image.open('./image/1.jpg'), np.float64)
# print(im_f2.dtype)


''' 图片文件保存，ndarray转换成图片
    使用 Image.fromarray() 函数读取 ndarray 数据时，可以得到一个 PIL.Image 类型的文件。
    再使用 save() 函数即可将其保存下来。被保存的文件格式，将根据其指定的扩展名自动进行判别。
'''
# pil_img = Image.fromarray(im)
# print(pil_img.mode)  # RGB 和 L 
# pil_img.save('./test.jpg')
